- 实现栈,后进先出(LIFO)
包括往后面添加(push),返回第一个并删除(pop),返回最后一个(peek),是否为空(isEmpty),大小(size),
清空(clear)
class
Stack {
constructor(){
this.
item = []
}
push (
data) {
this.
item.
push(
data)
}
pop () {
return
this.
item.
pop()
}
peek () {
return
this.
item[
this.
item.
length-
1]
}
isEmpty () {
return
this.
item.
length ===
0
}
size () {
return
this.
item.
length
}
clear () {
this.
item = []
}
}
- 利用栈特性,实现十进制转二进制
function
divideBy2(
num) {
var
stack =
new
Stack();
var
rest =
'';
//余数
var
resStr =
'';
//返回值
while(
num >
0) {
rest =
num %
2;
stack.
push(
rest);
num =
Math.
floor(
num /
2)
}
while(!
stack.
isEmpty()) {
resStr +=
stack.
pop()
}
return
resStr
}
console.
log(
divideBy2(
10))
console.
log(
divideBy2(
1))
- 在十进制实现二进制的基础上,只需要稍微调整一下就可以实现十进制转二进制了,具体代码如下:
function
divideByAny(
num,
bit) {
var
stack =
new
Stack();
var
rest =
'';
//余数
var
resStr =
'';
//返回值
var
str =
'0123456789ABCDEF'
while(
num >
0) {
rest =
num %
bit;
stack.
push(
rest);
num =
Math.
floor(
num /
bit);
}
while(!
stack.
isEmpty()) {
resStr +=
str[
stack.
pop()];
}
return
resStr;
}
console.
log(
divideByAny(
10,
16))
console.
log(
divideByAny(
2,
16))
console.
log(
divideByAny(
20,
16))